home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DDJMAG / DDJ9203.ZIP / OOPASM.ZIP / SHADOW.ASM < prev    next >
Assembly Source File  |  1990-07-14  |  2KB  |  97 lines

  1.     .MODEL    SMALL
  2.  
  3.     INCLUDE    equates.inc
  4.     INCLUDE    instance.inc
  5.     INCLUDE    messages.inc
  6.     INCLUDE    objects.inc
  7.  
  8.     ShadowColor    EQU    08h        ;Shadow color
  9.  
  10. IF1
  11.     INCLUDE    macros.mac
  12.     INCLUDE    objects.mac
  13.     INCLUDE    strings.mac
  14. ENDIF
  15.  
  16.     EXTRN    Self:WORD
  17.  
  18.     .CODE
  19.  
  20. IF Dbug
  21.     PUBLIC    disShadow
  22. ENDIF
  23. COMMENT    %
  24. ==============================================================================
  25. Displays a shadow.
  26.  
  27. =============================================================================%
  28. disShadow    PROC    NEAR
  29.     getInst        dh,Row2,Self        ;Get lower row
  30.     getInst        dl,Col1            ;Get left column
  31.     getInst        bh,Col2            ;Get right column
  32.  
  33.     push        dx
  34.     inc        dh            ;Move beyond last row
  35.     add        dl,2            ;Move right two columns
  36.     add        bh,2
  37.     disAttr        dh,dl,bh,ShadowColor    ;Change attributes
  38.     pop        dx
  39.  
  40.     mov        cl,dh            ;Get last row
  41.     getInst        dh,Row1            ;Get upper row
  42.     sub        cl,dh            ;Get number of rows
  43.     xor        ch,ch
  44.     getInst        dl,Col2            ;Get right column
  45.     inc        dl
  46. dsh1:    inc        dh            ;Start at next row
  47.     pushData    <cx,dx>
  48.     disAttr        dh,dl,bh,ShadowColor    ;Change attributes
  49.     popData        <dx,cx>
  50.     loop        dsh1
  51.     ret
  52. disShadow    ENDP
  53.  
  54.  
  55.  
  56. COMMENT    %
  57. ==============================================================================
  58. Sets the shadow flag so other objects know that a shadow is being drawn.
  59. =============================================================================%
  60. setShadowFlag    PROC    NEAR
  61.     setInst        ?Shadow,1,Shadow,1    ;Set shadow flag
  62.     ret
  63. setShadowFlag    ENDP
  64.  
  65.  
  66.  
  67. COMMENT    %
  68. ==============================================================================
  69. Resets the shadow flag.
  70. =============================================================================%
  71. resetShadowFlag    PROC    NEAR
  72.     setInst        ?Shadow,Nil,Shadow,1    ;Reset shadow flag
  73.     ret
  74. resetShadowFlag    ENDP
  75.  
  76.  
  77.  
  78.     .DATA
  79.  
  80. defMsg    Shadow,\
  81.     Refresh,\
  82.     <setShadowFlag,,disShadow>
  83.  
  84. defMsg    Shadow,\
  85.     Clear,\
  86.     <,,resetShadowFlag>
  87.  
  88. defObj    Shadow,\
  89.     <>,\
  90.     <?Shadow,1,Nil>,\
  91.     <Refresh,Clear>
  92.  
  93.  
  94.  
  95.     END
  96. 
  97.